10 GOTO2015 15 POKE55,.:POKE56,31 17 CLR:DIMFG$,H$,T$,FT$:Z$=CHR$(.):M$=CHR$(13):B=7936:Q$=CHR$(34):GOTO900 20 F=.:PRINT"ENTER DISK DRIVE DEVICE NUMBER." 22 PRINT"(ENTER 0 TO EXIT.)" 25 PRINT:PRINT" 8[145]":INPUTD:IFD=.THEN495 30 IFD<4ORD>30THENPRINT"[147]ILLEGAL DEVICE NUMBER":GOTO20 35 POKE186,D:SYS51777 40 IFPEEK(2)=1THENPRINT"[147]?DEVICE";D;"[157] NOT PRESENT":GOTO20 45 IFPEEK(2)THEN49 48 PRINT"[147]NO FREE BLOCKS ON DISK":GOTO20 49 OPEN15,D,15:OPEN8,D,8,"#" 50 PRINT#15,"U1";8;0;18;1 51 PRINT#15,"U2";8;0;18;1 52 CLOSE8:PRINT"[147]":GOSUB600:IFA>19THENCLOSE15:PRINT:GOTO20 55 PRINT"ENTER COMPLETE GIF FILENAME." 57 PRINT"(PRESS RETURN FOR DIRECTORY.)" 60 FG$="":INPUTFG$:IFFG$=""THENOPEN8,D,.,"$":SYS51510:PRINT"[147]":CLOSE15:GOTO20 63 OPEN8,D,8,FG$:CLOSE8 65 GOSUB600:IFA>19THENPRINT:GOTO55 67 GOSUB500:SD=S:PD=P:POKE195,SD:POKE196,PD 70 PRINT"ENTER TEXT FILENAME." 73 PRINT"(PRESS RETURN TO START OVER.)" 75 PRINT:FT$="":INPUTFT$:IFFT$=""THENPRINT"[147]":CLOSE15:GOTO20 77 OPEN8,D,8,FT$:CLOSE8 80 GOSUB600:IFA>19THEN70 81 GOSUB500:OPEN8,D,8,"#" 82 PRINT#15,"U1";8;0;18;S 83 PRINT#15,"B-P";8;P+3 84 W=PEEK(45)+256*PEEK(46)+23:POKEW,16:POKEW+1,183:POKEW+2,2 85 FORI=.TO15:GET#8,A$:IFA$=CHR$(160)THENPOKEW,I:I=15:GOTO87 86 POKEI+695,ASC(A$+Z$) 87 NEXT 88 PRINT#15,"B-P";8;P+28 89 GET#8,A$:R=ASC(A$+Z$) 90 GET#8,A$:R=256*ASC(A$+Z$)+R 91 IFR>168THENPRINT"TOO MANY BLOCKS IN FILE":CLOSE8:GOTO70 93 PRINT"[147]";H$;M$;T$;M$;"ONE MOMENT PLEASE..." 94 PRINT#15,"U1";8;0;18;SD 96 PRINT#15,"B-P";8;PD+1 97 GET#8,A$:T=ASC(A$+Z$):POKE176,T 98 GET#8,A$:S=ASC(A$+Z$):POKE177,S 99 POKEW-21,16:POKEW-20,167:POKEW-19,2 100 FORI=.TO15:GET#8,A$:IFA$=CHR$(160)THENPOKEW-21,I:I=15:GOTO105 102 POKEI+679,ASC(A$+Z$) 105 NEXT 107 PRINT"CHECKING ";Q$;FG$;Q$;"..." 110 PRINT#15,"U1";8;0;T;S 115 GET#8,A$:TT=ASC(A$+Z$) 120 GET#8,A$:SS=ASC(A$+Z$) 130 IFF=1THEN800 135 IFFTHEN300 140 GOTO700 160 T=TT:S=SS:GOTO110 200 PRINT#15,"B-P";8;J 205 GET#8,A$:IFA$=","ORA$=";"ORA$="!"THEN220 210 J=J+1:IFJ<256THEN205 215 J=.:RETURN 220 T2=TT:S2=SS:POKEB,ASC(A$+Z$):IFJ=255THENRETURN 225 FORK=1TO255-J:GET#8,A$:POKEB+K,ASC(A$+Z$):NEXT 230 RETURN 300 IFM>255THENM=M-254:GOTO160 310 F=1:J=M:GOSUB200:IFJ=.THEN160 320 X=.:Y=M-1 330 GOSUB1000 400 CLOSE8:R$="00"+RIGHT$(STR$(R),1) 405 IFR>9THENR$="0"+RIGHT$(STR$(R),2) 410 IFR>99THENR$=RIGHT$(STR$(R),3) 415 OPEN8,D,8,FT$ 420 PRINT"READING IN ";Q$;FT$;Q$;"..." 425 PRINT"NUMBER OF BLOCKS TO READ = ";R$ 430 POKE2,K:SYS51202 435 PRINT"[147]";H$;M$;T$ 440 PRINT"SCRATCHING ";Q$;FT$;Q$;"... 445 [158]51354 450 [153]"ADDING ";Q$;FT$;Q$;" TO ";Q$;FG$;Q$;"..." 455 [158]51380 460 [158]51941 465 [152]15,"S0:";FT$:[151]176,T2:[151]177,S2 470 [158]52003:[158]52210 475 [153]"...DONE. VALIDATING DISK..." 480 [141]600:[160]15:[160]8:[139]A[177]19[167][153]:[137]20 485 [153]"LOAD":[137]20 495 [151]56,160:[128] 500 [152]15,"M-R";[199](144);[199](2);[199](5) 510 [161]#15,A$:S[178][198](A$[170]Z$) 520 [161]#15,A$:[161]#15,A$:[161]#15,A$ 530 [161]#15,A$:P[178][198](A$[170]Z$) 540 [142] 600 [132]15,A,B$,C,U 610 [139]A[177]19[167][153]:[153]A:[153]:[153]B$:[153]:[153]C,U 620 [142] 700 [129]I[178]2[164]14:[161]#8,A$:[151]I[170]B,[198](A$[170]Z$):[130] 705 [139][194](B[170]2)[178]71[175][194](B[170]3)[178]73[175][194](B[170]4)[178]70[167]715 710 [153]"NOT GIF FORMAT":[160]15:[137]15 715 [139][194](B[170]5)[178]56[175][194](B[170]6)[178]55[175][194](B[170]7)[178]97[167]G[178]1 720 P[178][194](B[170]12):[139]P[179]128[167]770 730 X[178](P[175]7)[170]1:M[178]2[174]X[172]3:[139]M[177]240[167]760 740 J[178]M[170]15:[141]200:[139]J[167]X[178].:Y[178]J[171]1:[137]330 750 [137]790 760 F[178]255:M[178]M[171]239:[141]1020:[137]160 770 J[178]15:[141]205:[139]J[178].[167]790 780 X[178].:Y[178]14:[137]330 790 F[178]1:[141]1020:[137]160 800 J[178]2:[141]200:[139]J[178].[167]160 810 [137]400 900 [153]"LOAD(null)HE CHR$RAPHICS RIGHT$NTERCHANGE ASCORMAT(C)" 902 [153]"IS THE LENOPYRIGHT PROPERTY OF" 905 [153]"LENOMPU(null)ERVE RIGHT$NCORPORATED. CHR$RIGHT$ASC(SM)" 907 [153]"IS A (null)ERVICE (null)ARK PROPERTY OF" 910 [153]"LENOMPU(null)ERVE RIGHT$NCORPORATED." 912 [153]" [(null)(null)VAL(null)(null) (null)VAL(null)(null)(null)(null)]WAIT"; 915 [161]A$:[139]A$[178]M$[167]920 917 [137]915 920 [153]"LOAD(null)HIS PROGRAM LETS YOU ADD ";Q$;"COMMENT";Q$ 922 [153]"BLOCKS TO A CHR$RIGHT$ASC DATA FILE. (null)YPICALLY," 925 [153]"IT IS TEXT THAT DESCRIBES THE DISPLAYED" 927 [153]"IMAGE. ATN COMMENT BLOCK IS THE MOST" 930 [153]"POPULAR OF A SERIES OF EXTENSION BLOCKS" 932 [153]"DEFINED BY THE CHR$RIGHT$ASC 89A STANDARD. (null)OME" 935 [153]"CHR$RIGHT$ASC DECODERS WILL DISPLAY THE TEXT, AND" 937 [153]"SOME WON'T. ASCOR THE LENOMMODORE 64," 940 [153]Q$;"CHR$IF (null)IEWER 2.1";Q$;" ((null)CHR$RIGHT$ASC64.PEEKRIGHT$(null)) BY STR$AVID" 942 [153]"MID$ANSEN WILL (null)(null)(null) HANDLE THE BLOCKS." 943 [153]"PEEKUT IF THAT PROGRAM IS MODIFIED BY" 945 [153]Q$;"(null)CHR$RIGHT$(null)LEFT$.PEEKRIGHT$(null)";Q$;" (LIBRARY 10 OF LENPEEK(null)ATN(null)(null)), YOU" 946 [153]" [(null)(null)VAL(null)(null) (null)VAL(null)(null)(null)(null)]WAIT"; 947 [161]A$:[139]A$[178]M$[167]950 948 [137]947 950 [153]"LOADWILL SEE BOTH TEXT AND IMAGE WHEN YOU" 952 [153]"USE THE DECODER (THE TEXT DISPLAY IS" 955 [153]"PAGED)." 957 [153]"(null)OUR TEXT MUST BE IN A (null)VAL(null)ATN(null)LENRIGHT$RIGHT$ FILE" 958 [153]"ON THE SAME DISK AS THE CHR$RIGHT$ASC FILE. RIGHT$F" 960 [153]"THE CHR$RIGHT$ASC IS TO BE DISPLAYED ON AN (null)(null)-STR$(null)(null)" 961 [153]"MACHINE, EACH CARRIAGE RETURN (LEN(null)) MUST" 962 [153]"BE FOLLOWED BY A LINEFEED ((null)ASC). (null)HE" 964 [153]"TEXT FILE CAN BE NO MORE THAN 168 DISK" 965 [153]"BLOCKS IN LENGTH (42672 BYTES), AND" 967 [153]"THERE MUST BE AT LEAST ONE FREE BLOCK ON" 968 [153]" [(null)(null)VAL(null)(null) (null)VAL(null)(null)(null)(null)]WAIT"; 969 [161]A$:[139]A$[178]M$[167]972 970 [137]969 972 [153]"LOADTHE DISK. (null)HE CHR$RIGHT$ASC FILE MAY BE ANY SIZE." 973 [153]"(null)HE COMMENT BLOCKS ARE INSERTED PEEKVALASC(null)(null)VAL" 974 [153]"THE IMAGE DATA. VALNTER THE CHR$RIGHT$ASC AND TEXT" 975 [153]"FILNAMES AT THE PROMPT AND (null)ATNRIGHT$(null) (IT" 978 [153]"DOESN'T REALLY TAKE THAT LONG). ATNND" 980 [153]"REMEMBER, ";Q$;"ONE PICTURE IS WORTH 1024" 982 [153]"WORDS";Q$;"." 985 [153]" [(null)(null)VAL(null)(null) (null)VAL(null)(null)(null)(null) (null)(null) (null)(null)(null)LENVALVALSTR$]WAIT" 987 [153]" [(null)(null)VAL(null)(null) X (null)(null) VAL(null)RIGHT$(null)]WAIT"; 990 [161]A$:[139]A$[178]M$[167][153]"RETURNLOAD":[137]20 992 [139]A$[178]"X"[167][153]"RETURNLOAD":[137]495 995 [137]990 1000 [152]15,"B-P";8;. 1010 [152]8,[199](X);:[152]8,[199](Y); 1020 [139]G[178].[167]1050 1030 [152]15,"B-P";8;5 1040 [152]8,[199](56);:[152]8,[199](57);:[152]8,[199](97); 1050 [152]15,"U2";8;0;T;S 1060 [142] 2015 [151]56,99:[153]"LOADRETURNONE MOMENT PLEASE..." 2020 P[178][194](45)[170]256[172][194](46)[171]1 2025 [139][194](P)[167]P[178]P[171]1:[137]2025 2030 P[178]P[171]1323:S[178]51202 2035 [129]I[178].[164]1323:[151]S[170]I,[194](P[170]I):[130] 2040 P[178]P[171]208:[151]P[171]1,.:[151]P[171]2,.:[151]2,P[173]256 2045 [151]45,P[175]255:[151]46,[194](2) 2050 [151]2054,48:[137]15